iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
Software Development

離開C#新手村的最後試煉系列 第 24

# 試煉24 - dynamic技巧2 無中生有

  • 分享至 

  • xImage
  •  

開始試煉

有沒有遇到過 拿到的json格式
有很多狀態 然後狀態都是用1,2,3代表意義
像是
OpenStatus 1表示OOO,2表示XXX
CloseStatus 1表示AAA,2表示BBB
BackStatus 1表示あああ,2表示わわわ
然後每次在除錯的時候都要放個對照表 要不然就是要背起來

很想再寫一個物件然後只是為了翻譯那些狀態
這時候就可以用dynamic無中生有的技巧

如何無中生有

使用ExpandoObject
(還不知道的人 先去下方補課)
既然要動態就動個痛快 - ExpandoObject

var demo = GetDemo();
dynamic reply = new System.Dynamic.ExpandoObject();
reply.Status = demo.Status;
reply.Message = demo.Message;
reply.OpenStatus = demo.OpenStatus.Value;
reply.CloseStatus = demo.CloseStatus.Value;
reply.BackStatus = demo.BackStatus.Value;
reply.Result = demo;

ViewBag.Json = Newtonsoft.Json.JsonConvert.SerializeObject(reply)

demo.OpenStatus.Value 有用到Ardalis.SmartEnum套件
.Value就會拿到對應的中文狀態
這樣你就不需要建立class 就可以產出好識別問題的json了
可以得到類似這樣的結果

延伸試煉

在網頁上顯示json的套件
jquery.json-viewer
https://github.com/abodelot/jquery.json-viewer

結束試煉

學會這技巧後 以後處理複雜json時 容易許多


上一篇
# 試煉23 - dynamic技巧1 通靈之術
下一篇
# 試煉25 - 自訂 class 技巧1 怎麼算相等
系列文
離開C#新手村的最後試煉30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言